import http from './http.js';

/**
 * 获取订单详情
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number} params.id - 订单ID（必填）
 * @returns {Promise} - 返回订单详情
 */
export const getOrderById = async (params = {}) => {
  try {
    // 参数处理，确保必填字段存在
    const requestParams = {
      ...params
    };

    const res = await http.post('Mini/Order/GetById', requestParams);
    return res;
  } catch (error) {
    console.error('获取订单详情失败:', error);
    throw error;
  }
};

/**
 * 获取订单列表
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number|null} params.tourGroupId - 旅游团Id（可选，long?类型）
 * @returns {Promise} - 返回查询结果
 */
export const getOrderList = async (params = {}) => {
  try {
    // 参数处理，确保必填字段存在
    const requestParams = {
      openId: '',
      tourGroupId: null,
      ...params
    };

    const res = await http.post('Mini/Order/GetAllList', requestParams);
    return res;
  } catch (error) {
    console.error('获取订单列表失败:', error);
    throw error;
  }
};

/**
 * 创建订单
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number} params.tourGroupId - 所属旅游团Id
 * @param {string} params.orderNo - 订单编号
 * @param {number} params.amount - 金额（单位：元，decimal类型）
 * @param {number} params.status - 订单状态
 * @param {string|null} params.payTime - 支付时间（可选，DateTime?类型）
 * @param {number|null} params.payType - 支付类型（可选，int?类型）
 * @param {string} params.contactPhone - 联系电话
 * @param {string} params.remark - 订单备注
 * @returns {Promise} - 返回创建结果
 */
export const createOrder = async (params = {}) => {
  try {
    // 直接使用传入的参数，不设置默认值
    const requestParams = {
      ...params
    };

    const res = await http.post('Mini/Order/Create', requestParams);
    return res;
  } catch (error) {
    console.error('创建订单失败:', error);
    throw error;
  }
};

/**
 * 更新订单
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number} params.id - 订单ID（必填）
 * @param {number} params.tourGroupId - 所属旅游团Id
 * @param {string} params.orderNo - 订单编号
 * @param {number} params.amount - 金额（单位：元，decimal类型）
 * @param {number} params.status - 订单状态
 * @param {string|null} params.payTime - 支付时间（可选，DateTime?类型）
 * @param {number|null} params.payType - 支付类型（可选，int?类型）
 * @param {string} params.contactPhone - 联系电话
 * @param {string} params.remark - 订单备注
 * @returns {Promise} - 返回更新结果
 */
export const updateOrder = async (params = {}) => {
  try {
    // 直接使用传入的参数，不设置默认值
    const requestParams = {
      ...params
    };

    const res = await http.post('Mini/Order/Update', requestParams);
    return res;
  } catch (error) {
    console.error('更新订单失败:', error);
    throw error;
  }
};

/**
 * 删除订单
 * @param {Object} params - 请求参数
 * @param {string} params.openId - 小程序请求者的OpenId（必填）
 * @param {number} params.id - 订单ID（必填）
 * @returns {Promise} - 返回删除结果
 */
export const deleteOrderById = async (params = {}) => {
  try {
    // 参数处理，确保必填字段存在
    const requestParams = {
      ...params
    };

    const res = await http.post('Mini/Order/DeleteById', requestParams);
    return res;
  } catch (error) {
    console.error('删除订单失败:', error);
    throw error;
  }
};

/**
 * 获取订单状态文本
 * @param {number} status - 订单状态码
 * @returns {string} - 订单状态文本
 */
export const getOrderStatusText = (status) => {
  const statusMap = {
    0: '待支付',
    1: '已支付',
    2: '已取消',
    3: '已完成',
    4: '已退款'
  };
  return statusMap[status] || '未知';
};